package com.yujiahao.bigdata.rdd.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * TODO RDD --flatMap：扁平化
    1、 flatMap：扁平化，将整体数据拆分层个体数据，将1个变成N个
    2、参数说明；传递一个值，返回一个可迭代的集合
      rdd.flatMap(传递一个值 => 返回一个可迭代的集合)
 */

object Spark_RDD_Pper_Transform_FlatMap {
  def main(args: Array[String]): Unit = {


    //TODO 1、获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc: SparkContext = new SparkContext(conf)

    // TODO  3、业务逻辑

    //练习一：

    val rdd = sc.makeRDD(List(List(1, 2), List(3, 4)))
    val value: RDD[Int] = rdd.flatMap(list=> list)

    //练习二：	小功能：将List(List(1,2),3,List(4,5))进行扁平化操作

    val list1: RDD[Any] = sc.makeRDD(List(List(1, 2), 3, List(4, 5)))
    val newRDD = list1.flatMap {
      case list : List[_] => {
        list
      }
      case other => {
        List(other)
      }
    }

    //TODO 4、打印遍历
    value.collect().foreach(println)

    println("----------------分割线----------------")
    list1.collect().foreach(println)


    //TODO 2、关闭连接
    sc.stop()
  }
}